package com.backend.demo.dao;

import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;

import com.backend.demo.baseDAO.BaseDao;
import com.backend.demo.entities.EnumSort;
import com.backend.demo.util.DateTimeUtil;

/**
 * 枚举DAO
 * @author Administrator
 *
 */
@SuppressWarnings("unchecked")
@Repository
public class EnumSortDao extends BaseDao<EnumSort, Long> {
	
	/**
	 * 查询所有的枚举
	 * @return
	 */
	public List<EnumSort> getAllEnumSorts(){
		String hql = "from EnumSort";
		return getListByHQL(hql);
	}
	
	/**
	 * 综合查询
	 * @return
	 */
	public List<EnumSort> getEnumSortsByCondition(EnumSort enumSort){
		StringBuffer stringBuffer = new StringBuffer("from EnumSort where 1=1 ");
		if(StringUtils.isNotEmpty(enumSort.getCode())){
			stringBuffer.append("and code like '%" + enumSort.getCode() + "%'");
		}
		if(StringUtils.isNotEmpty(enumSort.getEnumword())){
			stringBuffer.append("and enumword like '%" + enumSort.getEnumword() + "%'");
		}
		if(StringUtils.isNotEmpty(enumSort.getName())){
			stringBuffer.append("and name like '%" + enumSort.getName() + "%'");
		}
		if(StringUtils.isNotEmpty(enumSort.getRemark())){
			stringBuffer.append("and remark like '%" + enumSort.getRemark() + "%'");
		}
		if(enumSort.getCreatetime() != null){
			String createtime = DateTimeUtil.formatDateTime(enumSort.getCreatetime());
			stringBuffer.append("and createtime >= '" + createtime + "'");
		}
		return getListByHQL(stringBuffer.toString());
	}
	
	/**
	 * 查询唯一枚举
	 * @param enumSortID
	 * @return
	 */
	public EnumSort getEnumSortById(long enumSortID){
		String hql = "from EnumSort where enumsortid = ?";
		return getOneByHQL(hql, enumSortID);
	}
	
	/**
	 * 新增枚举项
	 * @param enumSort
	 * @return
	 */
	public int addEnumSort(EnumSort enumSort){
		enumSort.setCreatetime(new Date());
		enumSort.setUpdatetime(new Date());
		return save(enumSort);
	}
	
	/**
	 * 修改枚举
	 * @param enumSort
	 * @return
	 */
	public int editEnumSort(EnumSort enumSort){
		String hql = "update EnumSort set code = ?,name = ?,enumword = ?,updatetime = ?,remark = ? where enumsortid = ?";
		return updateOrDeleteByHql(hql, enumSort.getCode(),enumSort.getName(),enumSort.getEnumword(),new Date(),enumSort.getRemark(),enumSort.getEnumsortid());
	}
	
	/**
	 * 删除枚举
	 * @param enumSortID
	 * @return
	 */
	public int deleteEnumSortByEnumSortID(long enumSortID){
		return deleteById(enumSortID);
	}
	
}
